package com.ruoyi.system.service.wx.pay.impl;

import java.util.List;
import java.util.stream.Collectors;

import com.ruoyi.system.domain.appvo.TreeData;
import com.ruoyi.system.domain.wx.pay.WxPayType;
import com.ruoyi.system.mapper.wx.pay.WxPayTypeMapper;
import com.ruoyi.system.service.wx.pay.IWxPayTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 支出类型Service业务层处理
 *
 * @author mic
 * @date 2023-08-17
 */
@Service
public class WxPayTypeServiceImpl implements IWxPayTypeService {
    @Autowired
    private WxPayTypeMapper wxPayTypeMapper;

    /**
     * 查询支出类型
     *
     * @param typeId 支出类型主键
     * @return 支出类型
     */
    @Override
    public WxPayType selectWxPayTypeByTypeId(String typeId) {
        return wxPayTypeMapper.selectWxPayTypeByTypeId(typeId);
    }

    /**
     * 查询支出类型列表
     *
     * @param wxPayType 支出类型
     * @return 支出类型
     */
    @Override
    public List<WxPayType> selectWxPayTypeList(WxPayType wxPayType) {
        return wxPayTypeMapper.selectWxPayTypeList(wxPayType);
    }

    /**
     * 新增支出类型
     *
     * @param wxPayType 支出类型
     * @return 结果
     */
    @Override
    public int insertWxPayType(WxPayType wxPayType) {
        return wxPayTypeMapper.insertWxPayType(wxPayType);
    }

    /**
     * 修改支出类型
     *
     * @param wxPayType 支出类型
     * @return 结果
     */
    @Override
    public int updateWxPayType(WxPayType wxPayType) {
        return wxPayTypeMapper.updateWxPayType(wxPayType);
    }

    /**
     * 批量删除支出类型
     *
     * @param typeIds 需要删除的支出类型主键
     * @return 结果
     */
    @Override
    public int deleteWxPayTypeByTypeIds(String[] typeIds) {
        return wxPayTypeMapper.deleteWxPayTypeByTypeIds(typeIds);
    }

    /**
     * 删除支出类型信息
     *
     * @param typeId 支出类型主键
     * @return 结果
     */
    @Override
    public int deleteWxPayTypeByTypeId(String typeId) {
        return wxPayTypeMapper.deleteWxPayTypeByTypeId(typeId);
    }

    /**
     * 转换成树形
     *
     * @param tree
     * @param treeList
     * @return
     */
    @Override
    public List<TreeData> streamGetChildren(TreeData tree, List<TreeData> treeList) {
        List<TreeData> list = treeList.stream()
                .filter(t -> t.getParentCode().equals(tree.getCode()))
                .map(item -> {
                    item.setChilds(streamGetChildren(item, treeList));
                    return item;
                })
                .collect(Collectors.toList());
        return list;
    }
}
